/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: INDeleteInfo.java,v 1.1 2006/05/06 09:00:14 ckaestne Exp $ */ package com.sleepycat.je.tree; import java.nio.ByteBuffer; import com.sleepycat.je.dbi.DatabaseId; import com.sleepycat.je.log.LogEntryType; import com.sleepycat.je.log.LogException; import com.sleepycat.je.log.LogReadable; import com.sleepycat.je.log.LogUtils; import com.sleepycat.je.log.LogWritable; import com.sleepycat.je.log.LoggableObject; /** * INDeleteInfo encapsulates the information logged about the removal of a * child from an IN during IN compression. */ public class INDeleteInfo implements LoggableObject, LogReadable, LogWritable { private long deletedNodeId; private byte[] deletedIdKey; private DatabaseId dbId; /** * Create a new delete info entry. */ public INDeleteInfo(long deletedNodeId, byte[] deletedIdKey, DatabaseId dbId) { this.deletedNodeId = deletedNodeId; this.deletedIdKey = deletedIdKey; this.dbId = dbId; } /** * Used by logging system only. */ public INDeleteInfo() { dbId = new DatabaseId(); } /* * Accessors. */ public long getDeletedNodeId() { return deletedNodeId; } public byte[] getDeletedIdKey() { return deletedIdKey; } public DatabaseId getDatabaseId() { return dbId; } /* * Logging support for writing. */ /** * @see LoggableObject#getLogType */ public LogEntryType getLogType() { return LogEntryType.LOG_IN_DELETE_INFO; } /** * @see LoggableObject#marshallOutsideWriteLatch * Can be marshalled outside the log write latch. */ public boolean marshallOutsideWriteLatch() { return true; } /** * @see LoggableObject#countAsObsoleteWhenLogged */ public boolean countAsObsoleteWhenLogged() { return false; } /** * @see LoggableObject#postLogWork */ public void postLogWork(long justLoggedLsn) { } /** * @see LoggableObject#getLogSize */ public int getLogSize() { return LogUtils.LONG_BYTES + LogUtils.getByteArrayLogSize(deletedIdKey) + dbId.getLogSize(); } /** * @see LogWritable#writeToLog */ public void writeToLog(ByteBuffer logBuffer) { LogUtils.writeLong(logBuffer, deletedNodeId); LogUtils.writeByteArray(logBuffer, deletedIdKey); dbId.writeToLog(logBuffer); } /** * @see LogReadable#readFromLog */ public void readFromLog(ByteBuffer itemBuffer, byte entryTypeVersion) throws LogException { deletedNodeId = LogUtils.readLong(itemBuffer); deletedIdKey = LogUtils.readByteArray(itemBuffer); dbId.readFromLog(itemBuffer, entryTypeVersion); } /** * @see LogReadable#dumpLog */ public void dumpLog(StringBuffer sb, boolean verbose) { sb.append("<INDeleteEntry node=\"").append(deletedNodeId); sb.append("\">"); sb.append(Key.dumpString(deletedIdKey, 0)); dbId.dumpLog(sb, verbose); sb.append("</INDeleteEntry>"); } /** * @see LogReadable#logEntryIsTransactional */ public boolean logEntryIsTransactional() { return false; } /** * @see LogReadable#getTransactionId */ public long getTransactionId() { return 0; } }